Design twice, code once